/**
 * 
 */
package com.apolo.repositorio;

import java.sql.*;
import java.net.*;

import com.apolo.entidades.Pessoa;
import com.apolo.sistema.util.*;
import com.apolo.sistema.excecoes.*;

/**
 * @author Armando
 *
 */
public class RepositorioPessoaBDR {

	ConnectionManager conexao = new ConnectionManager();
	
	public RepositorioPessoaBDR(){
	}
	
	/**
	 * Insere uma Pessoa na Tabela de Pessoas
	 * @param p Pessoa
	 */	
	public void insere(Pessoa p) throws RepositorioException{
		Statement statement = conexao.reservaStatement();
		try {
			if (p != null){
				statement.executeUpdate("INSERT INTO PESSOAS VALUES(null,'" + p.getNome() + "','" + p.getEmail() + "','" + p.getEndereco() + "','"  + p.getFone()  + "','"  + p.getSexo() + "')");
			}
		} catch (SQLException sqle) {
			throw new RepositorioException(sqle);
		}
	}	
	
	/**
	 * Procura por Pessoa
	 * @param codigo Codigo da Pessoa
	 * @return Pessoa
	 */
	public Pessoa procura(int codigo) throws RepositorioException{
		Pessoa p = null;
	    boolean resposta = false;
	    PreparedStatement statement;	
	    try {
		    statement = conexao.reservaPreparedStatement("SELECT * FROM PESSOAS WHERE codigo="+codigo);
	        ResultSet resultset = statement.executeQuery();
	        resposta = resultset.next();
	        if (resposta){
	        	String nome = resultset.getString("nome");
	        	String endereco =  resultset.getString("endereco");
	        	String email =  resultset.getString("email");
	        	String fone =  resultset.getString("telefone");
	        	String sexo =  resultset.getString("sexo");
	        	
	        	p = new Pessoa();
	        	p.setCodigo(codigo);
	        	p.setNome(nome);
	        	p.setEndereco(endereco);
	        	p.setEmail(email);
	        	p.setFone(fone);
	        	p.setSexo(sexo);
	        }else {
	        	return null;
	        }
	        resultset.close();
	      }
	      catch (SQLException sqle) {
	        throw new RepositorioException(sqle);
	      }
	      return p;
	}
	
	/**
	 * Checa se a Pessoa esta no repositorio
	 * @param codigo Codigo da Pessoa
	 * @return True se a Pessoa foi encontra e False se a Pessoa nao foi encontrada
	 */
	public boolean existe(int codigo) throws RepositorioException{
	    boolean resposta = false;
	    PreparedStatement statement;	
	    try {
		    statement = conexao.reservaPreparedStatement("SELECT * FROM PESSOAS WHERE codigo="+codigo);
	        ResultSet resultset = statement.executeQuery();
	        resposta = resultset.next();
	        if (resposta){
	        	return true;
	        }else {
	        	return false;
	        }
	      }
	      catch (SQLException sqle) {
	        throw new RepositorioException(sqle);
	      }
	}	
	
}